﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace proyectoENS
{
    public partial class frmEstadoAlumnos : Form
    {
        public int IdAlumno { get; set; }
        private static frmEstadoAlumnos Instancia;
        public static frmEstadoAlumnos onlyInsancia
        {
            get
            {
                if (Instancia == null || Instancia.IsDisposed)
                    Instancia = new frmEstadoAlumnos();
                return Instancia;
            }
        }
        private frmEstadoAlumnos()
        {
            InitializeComponent();
        }

        private void frmEstadoAlumnos_Load(object sender, EventArgs e)
        {
            

        }
        private void crearDataGrid()
        {
            dgvNotas.Rows.Clear();
            dgvNotas.Columns.Clear();
            DataGridViewColumn c = new DataGridViewColumn();
            c.HeaderText = "Concepto";
            c.CellTemplate = new DataGridViewTextBoxCell();
            c.Name = "concepto";
            c.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dgvNotas.Columns.Add(c);   
            
            int curso = DALCursos.getIdCursoByIdAlumno(IdAlumno);
            foreach (Materias item in DALMaterias.getMateriasByCurso(curso))
            {
                c = new DataGridViewColumn();
                c.HeaderText = item.nombreMateria.ToUpper();
                c.CellTemplate = new DataGridViewTextBoxCell();
                c.Name = item.idMateria.ToString();
                c.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                c.ReadOnly = true;
                dgvNotas.Columns.Add(c);   
            }

        }
        private void cargarDatos()
        {
            lblAlumno.Text = "Alumno: " + DALAlumnos.getAlumnoByIdAlumno(IdAlumno).Apellidos + ", " + DALAlumnos.getAlumnoByIdAlumno(IdAlumno).nombres;
            lblFaltas.Text = "Inasistencias: " + DALAsistencias.getCantidadInasistencias(IdAlumno).ToString();
            lblTardanzas.Text = "Tardanzas: " + DALAsistencias.getCantidadTardanzas(IdAlumno).ToString();
            
            double cantFaltas = (DALAsistencias.getCantidadInasistencias(IdAlumno) + (DALAsistencias.getCantidadTardanzas(IdAlumno) * 0.5));
            lblTotal.Text = "Total Inasistencias: " + cantFaltas.ToString();
            lblSanciones.Text = "Sanciones: " + DALSanciones.getCantSancionesByIdAlumno(IdAlumno).ToString();
            int cantColumnas = dgvNotas.Columns.Count;
            string[] row;
            for (int i = 1; i <= 5; i++)
            {
                row = new string[cantColumnas];
                int index = 0;
                foreach (DataGridViewColumn item in dgvNotas.Columns)
                {
                    if (i <= 3)
                    {
                        if (index == 0)
                            row[index] = i.ToString() + "° Trimestre";
                        else
                            if (DALNotas.getCalificacion(IdAlumno, int.Parse(item.Name), i) != null)                              
                                    row[index] = DALNotas.getCalificacion(IdAlumno, int.Parse(item.Name), i).calificacion.ToString();
                                else
                                    row[index] = "N/D";
                    }
                    else if (i == 4)
                    {
                        if (index == 0)
                            row[index] = "Integrador";
                        else
                            if (DALNotas.getCalificacion(IdAlumno, int.Parse(item.Name), i) != null)
                                row[index] = DALNotas.getCalificacion(IdAlumno, int.Parse(item.Name), i).calificacion.ToString();
                            else
                                row[index] = "N/D";

                    }
                    else{
                        if (index == 0)
                            row[index] = "Promedio";
                        else
                            if (DALNotas.getPromedioFinalByIdAlumnoMateria(IdAlumno, int.Parse(item.Name)) > 0)
                            row[index] = DALNotas.getPromedioFinalByIdAlumnoMateria(IdAlumno, int.Parse(item.Name)).ToString();                                
                    }
                    index++;

                }
                dgvNotas.Rows.Add(row);
            }
         
            
        }
        private void btnBuscarAlumno_Click(object sender, EventArgs e)
        {
            frmBuscarAlumnos frm = new frmBuscarAlumnos();
            frm.ShowDialog();
            {
                if ((Alumnos)frm.selected == null)
                    return;
                IdAlumno = frm.selected.id;
                crearDataGrid();
                cargarDatos();
            }

        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmListaSanciones frm = new frmListaSanciones();
            frm.alumno = DALAlumnos.getAlumnoByIdAlumno(IdAlumno);
            frm.ShowDialog();
        }
    }
}
